Unityの領域なのかC#の領域なのか切り分け


概要

Unity上でC#を使ってスクリプト書くときとか、「あれ、これってUnity 特有なの?それともC#の言語の話なの?」ってなって、

最初勉強するときハマったというかどう調べれば良いのかわからなくなったんで、その区分けの話。



大雑把な区分け



このへんの切り分けで最初困ったこと



C#とCoroutine

端的に言うとC#にCoroutineと呼ばれるものはない。

IEnumeratorというかIteratorと、yield構文があるので、C#ではGeneratorを簡単に記述することができる。


Generatorについてはこのへん。

http://geekswithblogs.net/BlackRabbitCoder/archive/2010/04/21/more-fun-with-c-iterators-and-generators.aspx

(生粋のC#erのひとはもっと良い記事を知ってそうなんで教えて)


メソッドブロックを持ち、呼び出すたびにyieldからyieldまでを継続して実行し、値を返すことができる。


Unityでは、特にIEnumeratorを返すメソッドをUnityEngine.StartCoroutine()メソッドに渡すことで、Unityの決めたタイミングでメソッドを実行する、というスタイルで

ここでは継続的なコンテキストを持つコードを毎フレーム実行する、というCoroutineを実装している。